home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc1363.txt < prev    next >
Text File  |  1994-08-01  |  50KB  |  1,124 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                     C. Partridge
  8. Request for Comments: 1363                                         BBN
  9.                                                         September 1992
  10.  
  11.  
  12.                      A Proposed Flow Specification
  13.  
  14. Status of this Memo
  15.  
  16.    This memo provides information for the Internet community.  It does
  17.    not specify an Internet standard.  Distribution of this memo is
  18.    unlimited.
  19.  
  20. Abstract
  21.  
  22.    A flow specification (or "flow spec") is a data structure used by
  23.    internetwork hosts to request special services of the internetwork,
  24.    often guarantees about how the internetwork will handle some of the
  25.    hosts' traffic.  In the future, hosts are expected to have to request
  26.    such services on behalf of distributed applications such as
  27.    multimedia conferencing.
  28.  
  29.    The flow specification defined in this memo is intended for
  30.    information and possible experimentation (i.e., experimental use by
  31.    consenting routers and applications only).  This RFC is a product of
  32.    the Internet Research Task Force (IRTF).
  33.  
  34. Introduction
  35.  
  36.    The Internet research community is currently studying the problems of
  37.    supporting a new suite of distributed applications over
  38.    internetworks.  These applications, which include multimedia
  39.    conferencing, data fusion, visualization, and virtual reality, have
  40.    the property that they require the distributed system (the collection
  41.    of hosts that support the applications along with the internetwork to
  42.    which they are attached) be able to provide guarantees about the
  43.    quality of communication between applications.  For example, a video
  44.    conference may require a certain minimum bandwidth to be sure that
  45.    the video images are delivered in a timely way to all recipients.
  46.  
  47.    One way for the distributed system to provide guarantees is for hosts
  48.    to negotiate with the internetwork for rights to use a certain part
  49.    of the internetwork's resources.  (An alternative is to have the
  50.    internetwork infer the hosts' needs from information embedded in the
  51.    data traffic each host injects into the network.  Currently, it is
  52.    not clear how to make this scheme work except for a rather limited
  53.    set of traffic classes.)
  54.  
  55.  
  56.  
  57.  
  58. Partridge                                                       [Page 1]
  59.  
  60. RFC 1363             A Proposed Flow Specification        September 1992
  61.  
  62.  
  63.    There are a number of ways to effect a negotiation.  For example a
  64.    negotiation can be done in-band or out-of-band.  It can also be done
  65.    in advance of sending data (possibly days in advance), as the first
  66.    part of a connection setup, or concurrently with sending (i.e., a
  67.    host starts sending data and starts a negotiation to try to ensure
  68.    that it will allowed to continue sending).  Insofar as is possible,
  69.    this memo is agnostic with regard to the variety of negotiation that
  70.    is to be done.
  71.  
  72.    The purpose of this memo is to define a data structure, called a flow
  73.    specification or flow spec, that can be used as part of the
  74.    negotiation to describe the type of service that the hosts need from
  75.    the internetwork.  This memo defines the format of the fields of the
  76.    data structure and their interpretation.  It also briefly describes
  77.    what purpose the different fields fill, and discusses why this set of
  78.    fields is thought to be both necessary and sufficient.
  79.  
  80.    It is important to note that the goal of this flow spec is to able to
  81.    describe *any* flow requirement, both for guaranteed flows and for
  82.    applications that simply want to give hints to the internetwork about
  83.    their requirements.
  84.  
  85. Format of the Flow Spec
  86.  
  87.        0                   1                   2                   3
  88.        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  89.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  90.       |              Version          |    Maximum Transmission Unit  |
  91.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  92.       |      Token Bucket Rate        |        Token Bucket Size      |
  93.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  94.       |  Maximum Transmission Rate    |     Minimum Delay Noticed     |
  95.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  96.       |     Maximum Delay Variation   |        Loss Sensitivity       |
  97.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  98.       |     Burst Loss Sensitivity    |          Loss Interval        |
  99.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  100.       |    Quality of Guarantee       |
  101.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  102.  
  103. Discussion of the Flow Spec
  104.  
  105.    The flow spec indicates service requirements for a single direction.
  106.    Multidirectional flows will need to request services in both
  107.    directions (using two flow specs).
  108.  
  109.    To characterize a unidirectional flow, the flow spec needs to do four
  110.    things.
  111.  
  112.  
  113.  
  114. Partridge                                                       [Page 2]
  115.  
  116. RFC 1363             A Proposed Flow Specification        September 1992
  117.  
  118.  
  119.    First, it needs to characterize how the flow's traffic will be
  120.    injected into the internetwork.  If the internetwork doesn't know
  121.    what to expect (is it a gigabit-per-second flow or a three kilobit-
  122.    per-second flow?) then it is difficult for the internetwork to make
  123.    guarantees.  (Note the word "difficult" rather than "impossible."  It
  124.    may be possible to statistically manage traffic or over-engineer the
  125.    network so well that the network can accept almost all flows, without
  126.    setup.  But this problem looks far harder than asking the sender to
  127.    approximate its behavior so the network can plan.)  In this flow
  128.    spec, injected traffic is characterized as having a sustainable rate
  129.    (the token bucket rate) a peak rate (the maximum transmission rate),
  130.    and an approximate burst size (the token bucket size).  A more
  131.    precise definition of each of these fields is given below.  The
  132.    characterization is based, in part, on the work done in [1].
  133.  
  134.    Second, the flow spec needs to characterize sensitivity to delay.
  135.    Some applications are more sensitive than others.  At the same time,
  136.    the internetwork will likely have a choice of routes with various
  137.    delays available from the source to destination.  For example, both
  138.    routes using satellites (which have very long delays) and routes
  139.    using terrestrial lines (which will have shorter delays) may be
  140.    available.  So the sending host needs to indicate the flow's
  141.    sensitivity to delay.  However, this field is only advisory.  It only
  142.    tells the network when to stop trying to reduce the delay - it does
  143.    not specify a maximum acceptable delay.
  144.  
  145.    There are two problems with allowing applications to specify the
  146.    maximum acceptable delay.
  147.  
  148.    First, observe that an application would probably be happy with a
  149.    maximum delay of 100 ms between the US and Japan but very unhappy
  150.    with a delay of 100 ms within the same city.  This observation
  151.    suggests that the maximum delay is actually variable, and is a
  152.    function of the delay that is considered achievable.  But the
  153.    achievable delay is largely determined by the geographic distance
  154.    between the two peers, and this sort of geographical information is
  155.    usually not available from a network.  Worse yet, the advent of
  156.    mobile hosts makes such information increasingly hard to provide.  So
  157.    there is reason to believe that applications may have difficulty
  158.    choosing a rational maximum delay.
  159.  
  160.    The second problem with maximum delays is that they are an attempt to
  161.    quantify what performance is acceptable to users, and an application
  162.    usually does not know what performance will be acceptable its user.
  163.    For example, a common justification for specifying a maximum
  164.    acceptable delay is that human users find it difficult to talk to
  165.    each other over a link with more than about 100 ms of delay.
  166.    Certainly such delays can make the conversation less pleasant, but it
  167.  
  168.  
  169.  
  170. Partridge                                                       [Page 3]
  171.  
  172. RFC 1363             A Proposed Flow Specification        September 1992
  173.  
  174.  
  175.    is still possible to converse when delays are several seconds long,
  176.    and given a choice between no connection and a long delay, many users
  177.    will pick the delay.  (The phone call may involve an important matter
  178.    that must be resolved.)
  179.  
  180.    As part of specifying a flow's delay sensitivity, the flow spec must
  181.    also characterize how sensitive the flow is to the distortion of its
  182.    data stream.
  183.  
  184.    Packets injected into a network according to some pattern will not
  185.    normally come out of the network still conforming to the pattern.
  186.    Instead, the pattern will have been distorted by queueing effects in
  187.    the network.  Since there is reason to believe that it may make
  188.    network design easier to continue to allow the networks slightly
  189.    distort traffic patterns, it is expected that those applications
  190.    which are sensitive to distortion will require their hosts to use
  191.    some amount of buffering to reshape the flow back into its original
  192.    form.  It seems reasonable to assume that buffer space is not
  193.    infinite and that a receiving system will wish to limit the amount of
  194.    buffering that a single flow can use.
  195.  
  196.    The amount of buffer space required for removing distortion at the
  197.    receiving system is determined by the variation in end-to-end
  198.    transmission delays for data sent over the flow.  If the transmission
  199.    delay is a mean delay, D, plus or minus a variance, V, the receiving
  200.    system needs buffer space equivalent to 2 * V * the transmission
  201.    rate.  To see why this is so, consider two packets, A and B, sent T
  202.    time units apart which must be delivered to the receiving application
  203.    T time units apart.  In the worst case, A arrives after a delay of
  204.    D-V time units (the minimum delay) and B arrives after a delay of D+V
  205.    time units (the maximum delay).  The receiver cannot deliver B until
  206.    it arrives, which is T + 2 * V time units after A.  To ensure that A
  207.    is delivered T time units before B, A must be buffered for 2 * V time
  208.    units.  The delay variance field is the value of 2 * V, and allows
  209.    the receiver to indicate how much buffering it is willing to provide.
  210.  
  211.    A third function of the flow spec is to signal sensitivity to loss of
  212.    data.  Some applications are more sensitive to the loss of their data
  213.    than other applications.  Some real-time applications are both
  214.    sensitive to loss and unable to wait for retransmissions of data.
  215.    For these particularly sensitive applications, hosts may implement
  216.    forward error correction on a flow to try to absolutely minimize
  217.    loss.  The loss fields allow hosts to request loss properties
  218.    appropriate for the application's requirements.
  219.  
  220.    Finally, it is expected that the internetwork may be able to provide
  221.    a range of service guarantees.  At the best, the internetwork may be
  222.    asked to guarantee (with tight probability bounds) the quality of
  223.  
  224.  
  225.  
  226. Partridge                                                       [Page 4]
  227.  
  228. RFC 1363             A Proposed Flow Specification        September 1992
  229.  
  230.  
  231.    service it will provide.  Or the internetwork may simply be asked to
  232.    ensure that packets sent over the flow take a terrestrial path.  The
  233.    quality of guarantee field indicates what type of service guarantee
  234.    the application desires.
  235.  
  236. Definition of Individual Fields
  237.  
  238. General Format of Fields
  239.  
  240.    With a few exceptions, fields of the flow spec are expressed using a
  241.    common 16-bit format.  This format has two forms.  The first form is
  242.    shown below.
  243.  
  244.                0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  245.               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  246.               |0|  Exponent   |     Value     |
  247.               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  248.  
  249.    In this format, the first bit is 0, followed by 7 bits of an exponent
  250.    (E), and an 8-bit value (V).  This format encodes a number, of the
  251.    form V * (2**E).  This representation was chosen to allow easy
  252.    representation of a wide range of values, while avoiding over-precise
  253.    representations.
  254.  
  255.    In some case, systems will not wish to request a precise value but
  256.    rather simply indicate some sensitivity.  For example, a virtual
  257.    terminal application like Telnet will likely want to indicate that it
  258.    is sensitive to delay, but it may not be worth expressing particular
  259.    delay values for the network to try to achieve.  For these cases,
  260.    instead of a number, the field in the flow spec will take the
  261.    following form:
  262.  
  263.                0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  264.               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  265.               |1|   Well-defined Constant     |
  266.               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  267.  
  268.    The first bit of the field is one, and is followed by a 15-bit
  269.    constant.  The values of the constants for given fields are defined
  270.    below.  Any additional values can be requested from the Internet
  271.    Assigned Numbers Authority (IANA).
  272.  
  273.    Version Field
  274.  
  275.       This field is a 16-bit integer in Internet byte order.  It is the
  276.       version number of the flow specification.  The version number of
  277.       the flow specification defined in this document is 1.  The IANA is
  278.       responsible for assigning future version numbers for any proposed
  279.  
  280.  
  281.  
  282. Partridge                                                       [Page 5]
  283.  
  284. RFC 1363             A Proposed Flow Specification        September 1992
  285.  
  286.  
  287.       revisions of this flow specification.
  288.  
  289.       This field does not use the general field format.
  290.  
  291.    Maximum Transmission Unit (MTU)
  292.  
  293.       A 16-bit integer in Internet byte order which is the maximum
  294.       number of bytes in the largest possible packet to be transmitted
  295.       over this flow.
  296.  
  297.       This field does not use the general field format.
  298.  
  299.       The field serves two purposes.
  300.  
  301.       It is a convenient unit for expressing loss properties.  Using the
  302.       default MTU of the internetwork is inappropriate since the
  303.       internetwork have very large MTU, such the 64Kbytes of IP, but
  304.       applications and hosts may be sensitive to losses of far less than
  305.       an MTU's amount of data -- for example, a voice application would
  306.       be sensitive to a loss of several consecutive small packets.
  307.  
  308.       The MTU also bounds the amount of time that a flow can transmit,
  309.       uninterrupted, on a shared media.
  310.  
  311.       Similarly, the loss rates of links that suffer bit errors will
  312.       vary dramatically based on the MTU size.
  313.  
  314.    Token Bucket Rate
  315.  
  316.       The token bucket rate is one of three fields used to define how
  317.       traffic will be injected into the internetwork by the sending
  318.       application.  (The other two fields are the token bucket size and
  319.       the maximum transmission rate.)
  320.  
  321.       The token rate is the rate at which tokens (credits) are placed
  322.       into an imaginary token bucket.  For each flow, a separate bucket
  323.       is maintained.  To send a packet over the flow, a host must remove
  324.       a number of credits equal to the size of the packet from the token
  325.       bucket.  If there are not enough credits, the host must wait until
  326.       enough credits accumulate in the bucket.
  327.  
  328.       Note that the fact that the rate is expressed in terms of a token
  329.       bucket rate does not mean that hosts must implement token buckets.
  330.       Any traffic management scheme that yields equivalent behavior is
  331.       permitted.
  332.  
  333.       The field is in the general field format and counts the number of
  334.       byte credits (i.e., right to send a byte) per second which are
  335.  
  336.  
  337.  
  338. Partridge                                                       [Page 6]
  339.  
  340. RFC 1363             A Proposed Flow Specification        September 1992
  341.  
  342.  
  343.       deposited into the token bucket.  The value must be a number (not
  344.       a well-known constant).
  345.  
  346.       The value zero is slightly special.  It is used to indicate that
  347.       the application is not making a request for bandwidth guarantees.
  348.       If this field is zero, then the Token Bucket Size must also be
  349.       zero, and the type of guarantee requested may be no higher than
  350.       predicted service.
  351.  
  352.    Token Bucket Size
  353.  
  354.       The token bucket size controls the maximum amount of data that the
  355.       flow can send at the peak rate.  More formally, if the token
  356.       bucket size is B, and the token bucket rate is R, over any
  357.       arbitrarily chosen interval T in the life of the flow, the amount
  358.       of data that the flow sends cannot have exceeded B + (R * T)
  359.       bytes.
  360.  
  361.       The token bucket is filled at the token bucket rate.  The bucket
  362.       size limits how many credits the flow may store.  When the bucket
  363.       is full, new credits are discarded.
  364.  
  365.       The field is in the general field format and indicates the size of
  366.       the bucket in bytes.  The value must be a number.
  367.  
  368.       Note that the bucket size must be greater than or equal to the MTU
  369.       size.
  370.  
  371.       Zero is a legal value for the field and indicates that no credits
  372.       are saved.
  373.  
  374.    Maximum Transmission Rate
  375.  
  376.       The maximum transmission rate limits how fast packets may be sent
  377.       back to back from the host.  Consider that if the token bucket is
  378.       full, it is possible for the flow to send a series of back-to-back
  379.       packets equal to the size of the token bucket.  If the token
  380.       bucket size is large, this back-to-back run may be long enough to
  381.       significantly inhibit multiplexing.
  382.  
  383.       To limit this effect, the maximum transmission rate bounds how
  384.       fast successive packets may be placed on the network.
  385.  
  386.       One can think of the maximum transmission rate control as being a
  387.       form of a leaky bucket.  When a packet is sent, a number of
  388.       credits equal to the size of the packet is placed into an empty
  389.       bucket, which drains credits at the maximum transmission rate.  No
  390.       more packets may be sent until the bucket has emptied again.
  391.  
  392.  
  393.  
  394. Partridge                                                       [Page 7]
  395.  
  396. RFC 1363             A Proposed Flow Specification        September 1992
  397.  
  398.  
  399.       The maximum transmission rate is the rate at which the bucket is
  400.       emptied.  The field is in the general field format and indicates
  401.       the size of the bucket in bytes.  The value must be a number and
  402.       must be greater than or equal to the token bucket rate.
  403.  
  404.       Note that the MTU size can be used in conjunction with the maximum
  405.       transmission rate to bound how long an individual packet blocks
  406.       other transmissions.  The MTU specifies the maximum time an
  407.       individual packet may take.  The Maximum Transmission Rate, limits
  408.       the frequency with which packets may be placed on the network.
  409.  
  410.    Minimum Delay Noticed
  411.  
  412.       The minimum delay noticed field tells the internetwork that the
  413.       host and application are effectively insensitive to improvements
  414.       in end-to-end delay below this value.  The network is encouraged
  415.       to drive the delay down to this value but need not try to improve
  416.       the delay further.
  417.  
  418.       The field is in the general field format.
  419.  
  420.       If expressed as a number it is the number of microseconds of delay
  421.       below which the host and application do not care about
  422.       improvements.  Human users only care about delays in the
  423.       millisecond range but some applications will be computer to
  424.       computer and computers now have clock times measured in a handful
  425.       of nanoseconds.  For such computers, microseconds are an
  426.       appreciable time.  For this reason, this field measures in
  427.       microseconds, even though that may seem small.
  428.  
  429.       If expressed as a well-known constant (first bit set), two field
  430.       values are accepted:
  431.  
  432.          0 - the application is not sensitive to delay
  433.  
  434.          1 - the application is moderately delay sensitive
  435.              e.g., avoid satellite links where possible).
  436.  
  437.    Maximum Delay Variation
  438.  
  439.       If a receiving application requires data to be delivered in the
  440.       same pattern that the data was transmitted, it may be necessary
  441.       for the receiving host to briefly buffer data as it is received so
  442.       that the receiver can restore the old transmission pattern.  (An
  443.       easy example of this is a case where an application wishes to send
  444.       and transmit data such as voice samples, which are generated and
  445.       played at regular intervals.  The regular intervals may be
  446.       distorted by queueing effects in the network and the receiver may
  447.  
  448.  
  449.  
  450. Partridge                                                       [Page 8]
  451.  
  452. RFC 1363             A Proposed Flow Specification        September 1992
  453.  
  454.  
  455.       have to restore the regular spacing.)
  456.  
  457.       The amount of buffer space that the receiving host is willing to
  458.       provide determines the amount of variation in delay permitted for
  459.       individual packets within a given flow.  The maximum delay
  460.       variation field makes it possible to tell the network how much
  461.       variation is permitted.  (Implementors should note that the
  462.       restrictions on the maximum transmission rate may cause data
  463.       traffic patterns to be distorted before they are placed on the
  464.       network, and that this distortion must be accounted for in
  465.       determining the receiver buffer size.)
  466.  
  467.       The field is in the general field format and must be a number.  It
  468.       is the difference, in microseconds, between the maximum and
  469.       minimum possible delay that a packet will experience.  (There is
  470.       some question about whether microsecond units are too large.  At a
  471.       terabit per second, one microsecond is a megabit.  Presumably if a
  472.       host is willing to receive data at terabit speeds it is willing to
  473.       provide megabits of buffer space.)
  474.  
  475.       The value of 0, meaning the receiving host will not buffer out
  476.       delays, is acceptable but the receiving host must still have
  477.       enough buffer space to receive a maximum transmission unit sized
  478.       packet from the sending host.  Note that it is expected that a
  479.       value of 0 will make it unlikely that a flow can be established.
  480.  
  481.    Loss Sensitivity
  482.  
  483.       This field indicates how sensitive the flow's traffic is to
  484.       losses.  Loss sensitivity can be expressed in one of two ways:
  485.       either as a number of losses of MTU-sized packets in an interval,
  486.       or simply as a value indicating a level of sensitivity.
  487.  
  488.       The field is in the general field format.
  489.  
  490.       If the value is a number, then the value is the number of MTU-
  491.       sized packets that may be lost out of the number of MTU-sized
  492.       packets listed in the Loss Interval field.
  493.  
  494.       If the value is a well-known constant, then one of two values is
  495.       permitted:
  496.  
  497.          0 - the flow is insensitive to loss
  498.  
  499.          1 - the flow is sensitive to loss (where possible
  500.              choose the path with the lowest loss rate).
  501.  
  502.  
  503.  
  504.  
  505.  
  506. Partridge                                                       [Page 9]
  507.  
  508. RFC 1363             A Proposed Flow Specification        September 1992
  509.  
  510.  
  511.    Burst Loss Sensitivity
  512.  
  513.       This field states how sensitive the flow is to losses of
  514.       consecutive packets.  The field enumerates the maximum number of
  515.       consecutive MTU-sized packets that may be lost.
  516.  
  517.       The field is in the general field format.
  518.  
  519.       If the value is a number, then the value is the number of
  520.       consecutive MTU-sized packets that may be lost.
  521.  
  522.       If the value is a well-known constant, then the value 0 indicates
  523.       that the flow is insensitive to burst loss.
  524.  
  525.       Note that it is permissible to set the loss sensitivity field to
  526.       simply indicate sensitivity to loss, and set a numerical limit on
  527.       the number of consecutive packets that can be lost.
  528.  
  529.    Loss Interval
  530.  
  531.       This field determines the period over which the maximum number of
  532.       losses per interval are measured.  In other words, given any
  533.       arbitrarily chosen interval of this length, the number of losses
  534.       may not exceed the number in the Loss Sensitivity field.
  535.  
  536.       The field is in the general field format.
  537.  
  538.       If the Loss Sensitivity field is a number, then this field must
  539.       also be a number and must indicate the number of MTU-sized packets
  540.       which constitutes a loss interval.
  541.  
  542.       If the Loss Sensitivity field is not a number (i.e., is a well-
  543.       known constant) then this field must use the well-known constant
  544.       of 0 (i.e., first bit set, all other bits 0) indicating that no
  545.       loss interval is defined.
  546.  
  547.    Quality of Guarantee
  548.  
  549.       It is expected that the internetwork will likely have to offer
  550.       more than one type of guarantee.
  551.  
  552.       There are two unrelated issues related to guarantees.
  553.  
  554.       First, it may not be possible for the internetwork to make a firm
  555.       guarantee.  Consider a path through an internetwork in which the
  556.       last hop is an Ethernet.  Experience has shown (e.g., some of the
  557.       IETF conferencing experiments) that an Ethernet can often give
  558.       acceptable performance, but clearly the internetwork cannot
  559.  
  560.  
  561.  
  562. Partridge                                                      [Page 10]
  563.  
  564. RFC 1363             A Proposed Flow Specification        September 1992
  565.  
  566.  
  567.       guarantee that the Ethernet will not saturate at some time during
  568.       a flow's lifetime.  Thus it must be possible to distinguish
  569.       between flows which cannot tolerate the small possibility of a
  570.       failure (and thus must guaranteed at every hop in the path) and
  571.       those that can tolerate islands of uncertainty.
  572.  
  573.       Second, there is some preliminary work (see [2]) that suggests
  574.       that some applications will be able to adapt to modest variations
  575.       in internetwork performance and that network designers can exploit
  576.       this flexibility to allow better network utilization.  In this
  577.       model, the internetwork would be allowed to deviate slightly from
  578.       the promised flow parameters during periods of load.  This class
  579.       of service is called predicted service (to distinguish it from
  580.       guaranteed service).
  581.  
  582.       The difference between predicted service and service which cannot
  583.       be perfectly guaranteed (e.g., the Ethernet example mentioned
  584.       above) is that the imperfect guarantee makes no statistical
  585.       promises about how it might mis-behave.  In the worst case, the
  586.       imperfect guarantee will not work at all, whereas predicted
  587.       service will give slightly degraded service.  Note too that
  588.       predicted service assumes that the routers and links in a path all
  589.       cooperate (to some degree) whereas an imperfect guarantee states
  590.       that some routers or links will not cooperate.
  591.  
  592.       The field is a 16-bit field in Internet byte order.  There are six
  593.       legal values:
  594.  
  595.          0 - no guarantee is required (the host is simply expressing
  596.              desired performance for the flow)
  597.  
  598.          100 (hex) - an imperfect guarantee is requested.
  599.  
  600.          200 (hex) - predicted service is requested and if unavailable,
  601.                      then no flow should be established.
  602.  
  603.          201 (hex) - predicted service is requested but an imperfect
  604.                      guarantee is acceptable.
  605.  
  606.          300 (hex) - guaranteed service is requested and if a firm
  607.                      guarantee cannot be given, then no flow should be
  608.                      established.
  609.  
  610.          301 (hex) - guaranteed service is request and but an imperfect
  611.                      guarantee is acceptable.
  612.  
  613.       It is expected that asking for predicted service or permitting an
  614.       imperfect guarantee will substantially increase the chance that a
  615.  
  616.  
  617.  
  618. Partridge                                                      [Page 11]
  619.  
  620. RFC 1363             A Proposed Flow Specification        September 1992
  621.  
  622.  
  623.       flow request will be accepted.
  624.  
  625. Possible Limitations in the Proposed Flow Spec
  626.  
  627.    There are at least three places where the flow spec is arguably
  628.    imperfect, based on what we currently know about flow reservation.
  629.    In addition, since this is a first attempt at a flow spec, readers
  630.    should expect modifications as we learn more.
  631.  
  632.    First, the loss model is not perfect.  Simply stating that an
  633.    application is sensitive to loss and to burst loss is a rather crude
  634.    indication of sensitivity.  However, explicitly enumerating loss
  635.    requirements within a cycle is also an imperfect mechanism.  The key
  636.    problem with the explicit values is that not all packets sent over a
  637.    flow will be a full MTU in size.  Expressed another way, the current
  638.    flow spec expects that an MTU-sized packet will be the unit of error
  639.    recovery.  If flows send packets in a range of sizes, then the loss
  640.    bounds may not be very useful.  However, the thought of allowing a
  641.    flow to request a set of loss models (one per packet size) is
  642.    sufficiently painful that I've limited the flow to one loss profile.
  643.    Further study of loss models is clearly needed.
  644.  
  645.    Second, the minimum delay sensitivity field limits a flow to stating
  646.    that there is one point on a performance sensitivity curve below
  647.    which the flow is no longer interested in improved performance.  It
  648.    may be that a single point is insufficient to fully express a flow's
  649.    sensitivity.  For example, consider a flow for supporting part of a
  650.    two-way voice conversation.  Human users will notice improvements in
  651.    delay down to a few 10s of milliseconds.  However, the key point of
  652.    sensitivity is the delay at which normal conversation begins to
  653.    become awkward (about 100 milliseconds).  By allowing only one
  654.    sensitivity point, the flow spec forces the flow designer to either
  655.    ask for the best possible delay (e.g, a few 10's of ms) to try to get
  656.    maximum performance from the network, or state a sensitivity of about
  657.    95 ms, and accept the possibility that the internetwork will not try
  658.    to improve delay below that value, even if it could (and even though
  659.    the user would notice the improvement).  My expectation is that a
  660.    simple point is likely to be easier to deal with than attempting to
  661.    enumerate two (or three or four) points in the sensitivity curve.
  662.  
  663.    Third, the models for service guarantees is still evolving and it is
  664.    by no means clear that the service choices provided are the correct
  665.    set.
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Partridge                                                      [Page 12]
  675.  
  676. RFC 1363             A Proposed Flow Specification        September 1992
  677.  
  678.  
  679. How an Internetwork is Expected to Handle a Flow Spec
  680.  
  681.    There are at least two parts to the issue of how an internetwork is
  682.    expected to handle a flow spec.  The first part deals with how the
  683.    flow spec is interpreted so that the internetwork can find a route
  684.    which will allow the internetwork to match the flow's requirements.
  685.    The second part deals with how the network replies to the host's
  686.    request.
  687.  
  688.    The precise mechanism for setting up a flow, given a flow spec, is a
  689.    large topic and beyond the scope of this memo.  The purpose of the
  690.    next few paragraphs is simply to sketch an argument that this flow
  691.    spec is sufficient to the requirements of the setup mechanisms known
  692.    to the author.
  693.  
  694.    The key problem in setting up a flow is determining if there exist
  695.    one or more routes from the source to the destination(s) which might
  696.    be able to support the quality of service requested.  Once one has a
  697.    route (or set of candidate routes) one can take whatever actions may
  698.    be appropriate to confirm that the route is actually viable and to
  699.    cause the flow's data to follow that route.
  700.  
  701.    There are a number of ways to find a route.  One might try to build a
  702.    route on the fly by establishing the flow hop-by-hop (as ST-II does)
  703.    or one might consult a route server which provides a set of candidate
  704.    source routes derived from a routing database.  However, whatever
  705.    system is used, some basic information about the flow needs to be
  706.    provided to the routing system.  This information is:
  707.  
  708.       * How much bandwidth the flow may require.  There's no point
  709.         in routing a flow that expects to send at over 10 megabits per
  710.         second via a T1 (1.5 megabit per second) link.
  711.  
  712.       * How delay sensitive the application is.  One does not wish
  713.         to route a delay-sensitive application over a satellite link,
  714.         unless the satellite link is the only possible route from here
  715.         to there.
  716.  
  717.       * How much error can be tolerated.  Can we send this flow over
  718.         our microwave channel on a rainy day or is a more reliable link
  719.         required?
  720.  
  721.       * How firm the guarantees need to be.  Can we put an Ethernet
  722.         in as one of the hops?
  723.  
  724.       * How much delay variation is tolerated.  Again, can an Ethernet
  725.         be included in the path?  Does the routing system need to worry
  726.         if the addition of this flow will cause a few routers to run
  727.  
  728.  
  729.  
  730. Partridge                                                      [Page 13]
  731.  
  732. RFC 1363             A Proposed Flow Specification        September 1992
  733.  
  734.  
  735.         at close to capacity?  (A side note: we assume that the routers
  736.         are running with priority queueing systems, so running the router
  737.         close to capacity doesn't mean that all flows get long and
  738.         variable delays.  Rather, running close to capacity means that
  739.         high priority flows will be unaffected, and low priority flows
  740.         will get hit with a lot of delay and variation.)
  741.  
  742.    The flow spec provides all of this information.  So it seems
  743.    plausible to assume it provides enough information to make routing
  744.    decisions at setup time.
  745.  
  746.    The flow spec was designed with the expectation that the network
  747.    would give a yes or no reply to a request for a guaranteed flow.
  748.  
  749.    Some researchers have suggested that the negotiation to set up a flow
  750.    might be an extended negotiation, in which the requesting host
  751.    initially requests the best possible flow it could desire and then
  752.    haggles with the network until they agree on a flow with properties
  753.    that the network can actually provide and the application still finds
  754.    useful.  This notion bothers me for at least two reasons.  First, it
  755.    means setting up a flow is a potentially long process.  Second, the
  756.    general problem of finding all possible routes with a given set of
  757.    properties is a version of the traveling salesman problem, and I
  758.    don't want to embed traveling salesman algorithms into a network's
  759.    routing system.
  760.  
  761.    The model used in designing this flow spec was that a system would
  762.    ask for the minimum level of service that was deemed acceptable and
  763.    the network would try to find a route that met that level of service.
  764.    If the network is unable to achieve the desired level of service, it
  765.    refuses the flow, otherwise it accepts the flow.
  766.  
  767. The Flow Spec as a Return Value
  768.  
  769.    This memo does not specify the data structures that the network uses
  770.    to accept or reject a flow.  However, the flow spec has been designed
  771.    so that it can be used to return the type of service being
  772.    guaranteed.
  773.  
  774.    If the request is being accepted, the minimum delay field could be
  775.    set to the guaranteed or predicted delay, and the quality of
  776.    guarantee field could be set to no guarantee (0), imperfect guarantee
  777.    (100 hex), predicted service (200 hex), or guaranteed service (300
  778.    hex).
  779.  
  780.    If the request is being rejected, the flow spec could be modified to
  781.    indicate what type of flow the network believes it could accept e.g.,
  782.    the traffic shape or delay characteristics could be adjusted or the
  783.  
  784.  
  785.  
  786. Partridge                                                      [Page 14]
  787.  
  788. RFC 1363             A Proposed Flow Specification        September 1992
  789.  
  790.  
  791.    type of guarantee lowered).  Note that this returned flow spec would
  792.    likely be a hint, not a promised offer of service.
  793.  
  794. Why Type of Service is not Good Enough
  795.  
  796.    The flow spec proposed in this memo takes the form of a set of
  797.    parameters describing the properties and requirements of the flow.
  798.    An alternative approach which is sometimes mentioned (and which is
  799.    currently incorporated into IP) is to use a Type of Service (TOS)
  800.    value.
  801.  
  802.    The TOS value is an integer (or bit pattern) whose values have been
  803.    predefined to represent requested quality of services.  Thus, a TOS
  804.    of 47 might request service for a flow using up to 1 gigabit per
  805.    second of bandwidth with a minimum delay sensitivity of 100
  806.    milliseconds.
  807.  
  808.    TOS schemes work well if the different quality of services that may
  809.    be requested are both enumerable and reasonably small.
  810.    Unfortunately, these conditions do not appear to apply to future
  811.    internetworks.  The range of possible bandwidth requests alone is
  812.    huge.  Combine this range with several gradations of delay
  813.    requirements, and widely different sensitivities to errors and the
  814.    set of TOS values required becomes extremely large.  (At least one
  815.    person has suggested to the author that perhaps a TOS field combined
  816.    with a bandwidth parameter might be appropriate.  In other words, a
  817.    two parameter model.  That's a tempting idea but my gut feeling is
  818.    that it is not quite sufficient so I'm proposing a more complete
  819.    parametric model.)
  820.  
  821.    Another reason to prefer parametric service is optimization issues.
  822.    A key issue in flow setup is trying to design the the routing system
  823.    to optimize its management of flows.  One can optimize on a number of
  824.    criteria.  A good example of an optimization problem is the following
  825.    question (expressed by Isidro Castineyra of BBN):
  826.  
  827.      "Given a request to establish a flow, how can the internetwork
  828.      accept that request in such a way as to maximize the chance that
  829.      the internetwork will also be able to accept the next flow
  830.      request?"
  831.  
  832.    The optimization goal here is call-completion - maximizing the chance
  833.    that requests to establish flows will succeed.  One might
  834.    alternatively try to maximize revenue (if one is charging for flows).
  835.  
  836.    The internetwork is presumably in a better position to do
  837.    optimizations if it has more information about the flow's expected
  838.    behavior.  For example, if a TOS system says only that a flow is
  839.  
  840.  
  841.  
  842. Partridge                                                      [Page 15]
  843.  
  844. RFC 1363             A Proposed Flow Specification        September 1992
  845.  
  846.  
  847.    delay sensitive, the routing system must seek out the most direct
  848.    route for the flow.  But if the routing system is told that the flow
  849.    is sensitive only to delays over 100 milliseconds, there may be a
  850.    number of routes other than the most direct route which can satisfy
  851.    this delay, thus leaving the most direct route available for a later
  852.    flow which needs a far lower delay.
  853.  
  854.    In fairness, it should be noted that a danger of a parametric model
  855.    is that it is very easy to have too many parameters.  The yearn to
  856.    optimize can be overdone.  The goal of this flow spec is to enumerate
  857.    just enough parameters that it appears that essential needs can be
  858.    expressed, and the internetwork has some information it can use to
  859.    try to manage the flows.  Features that would simply be nice or
  860.    useful to have (but not essential) are left out to keep the parameter
  861.    space small.
  862.  
  863. An Implication of the Flow Spec
  864.  
  865.    It is important to observe that the there are fields in the flow spec
  866.    that are based on information from the sender (such as rate
  867.    information) and fields in the flow spec that are based on
  868.    information from the receiver (such as delay variation).  There are
  869.    also fields that may sender and receiver to negotiate in advance.
  870.    For example, the acceptable loss rate may depend on whether the
  871.    sender and receiver both support the same type of forward error
  872.    correction.  The delay sensitivity for a voice connection may depend,
  873.    in part, on whether both sender and receiver support echo cancelling.
  874.  
  875.    The implication is that the internetwork must permit the sender and
  876.    receiver to communicate in advance of setting up a flow, because a
  877.    flow spec can only be defined once both sender and receiver have had
  878.    their say.  In other words, a reserved flow should not be the only
  879.    form of communication.   There must be some mechanism to perform a
  880.    short exchange of messages in preparation for setting up a flow.
  881.  
  882.    (Another aside: it has been suggested that perhaps the solution to
  883.    this problem is to have the sender establish a flow with an
  884.    incomplete flow spec, and when the receiver gets the flow spec, have
  885.    the receiver send the completed flow spec back along the flow, so the
  886.    internetwork can "revise" the flow spec according to the receiver's
  887.    desires.  I have two problems with this approach.  First, it is
  888.    entirely possible that the receiver's information may lead the
  889.    internetwork to conclude that the flow established by the sender is
  890.    no good.  For example, the receiver may indicate it has a smaller
  891.    tolerance for delay variation than expected and force the flow to be
  892.    rerouted over a completely different path.  Second, if we try to
  893.    avoid having the receiver's information cause the flow to fail, then
  894.    we have to over-allocate the flow's during the preliminary setup.
  895.  
  896.  
  897.  
  898. Partridge                                                      [Page 16]
  899.  
  900. RFC 1363             A Proposed Flow Specification        September 1992
  901.  
  902.  
  903.    But over allocating the resources requested may lead us to choose
  904.    better quality paths than we need for this flow.  In other words, our
  905.    attempts to optimize use of the network will fail.)
  906.  
  907. Advance Reservations and Flow Duration
  908.  
  909.    The primary purpose of a flow specification is to provide information
  910.    to the internetwork so the internetwork can properly manage the
  911.    proposed flow's traffic in the context of other traffic in the
  912.    internetwork.  One question is whether the flow should give the
  913.    network information about when the flow is expected to start and how
  914.    long the flow is expected to last.
  915.  
  916.    Announcing when a flow will start is generally of interest for
  917.    advance reservations.  (If the flow is not be reserved substantially
  918.    in advance, the presentation of the flow spec to the internetwork can
  919.    be taken as an implicit request for a flow, now.)  It is my view that
  920.    advance reservation is a distinct problem from the describing the
  921.    properties of a flow.  Advanced reservations will require some
  922.    mechanism to maintain information in the network about flows which
  923.    are not currently active but are expected to be activated at some
  924.    time in the future.  I anticipate this will require some sort of
  925.    distributed database to ensure that information about advanced
  926.    reservations is not accidentally lost if parts of the internetwork
  927.    crash.  In other words, advance reservations will require
  928.    considerable additional supporting baggage that it would probably be
  929.    better to keep out of the average flow spec.
  930.  
  931.    Deciding whether a flow spec should contain information about how
  932.    long the flow is expected to run is a harder decision to make.
  933.    Clearly if we anticipate that the internetwork will support advance
  934.    reservations, it will be necessary for elements of the internetwork
  935.    to predict their traffic load, so they can ensure that advance
  936.    reservations are not compromised by new flow requests.  However,
  937.    there is a school of thought that believes that estimating future
  938.    load from current behavior of existing flows is more accurate than
  939.    anything the flows may have declared in their flow specs.  For this
  940.    reason, I've left a duration field out of the flow spec.
  941.  
  942. Examples
  943.  
  944.    To illustrate how the flow spec values might be used, this section
  945.    presents three example flow specs.
  946.  
  947.    Telnet
  948.  
  949.       For the first example, consider using the flow spec to request
  950.       service for an existing application: Telnet.  Telnet is a virtual
  951.  
  952.  
  953.  
  954. Partridge                                                      [Page 17]
  955.  
  956. RFC 1363             A Proposed Flow Specification        September 1992
  957.  
  958.  
  959.       terminal protocol, and one can think of it as stringing a virtual
  960.       wire across the network between the user's terminal and a remote
  961.       host.
  962.  
  963.       Telnet has proved a very successful application without a need to
  964.       reserve bandwidth: the amount of data sent over any Telnet
  965.       connection tends to be quite small.  However, Telnet users are
  966.       often quite sensitive to delay, because delay can affect the time
  967.       it takes to echo characters.  This suggests that a Telnet
  968.       connection might benefit from asking the internetwork to avoid
  969.       long delay paths.  It could so so using the following flow spec
  970.       (for both directions):
  971.  
  972.       Version=1
  973.       MTU=80 [40 bytes of overhead + 40 bytes user data]
  974.       Token Bucket Rate=0/0/0 [don't want a guarantee]
  975.       Token Bucket Size=0/0/0
  976.       Maximum Transmission Rate=0/0/0
  977.       Maximum Delay Noticed=1/1 [constant = delay sensitive]
  978.       Maximum Delay Variation=0/0/0 [not a concern]
  979.       Loss Sensitivity=1/0 [don't worry about loss]
  980.       Burst Loss Sensitivity=1/0
  981.       Loss Interval=1/0
  982.       Quality of Guarantee=1/0 [just asking]
  983.  
  984.       It is worth noting that Telnet's flow spec is likely to be the
  985.       same for all instantiations of a Telnet connection.  As a result,
  986.       there may be some optimizations possible (such as just tagging
  987.       Telnet packets as being subject to the well-known Telnet flow
  988.       spec).
  989.  
  990.    A Voice Flow
  991.  
  992.       Now consider transmitting voice over the Internet.  Currently,
  993.       good quality voice can be delivered at rates of 32Kbit/s or
  994.       16Kbit/s.  Assuming the rate is 32Kbit/s and voice samples are 16
  995.       bit samples packaged into UDP datagrams (for a data rate of about
  996.       60 Kbyte/s), a flow spec might be:
  997.  
  998.       Version=1
  999.       MTU=30 [2 byte sample in UDP datagram]
  1000.       Token Bucket Rate=0/10/59 [60.4 Kbytes/s]
  1001.       Token Bucket Size=0/0/30 [save enough to send immediately
  1002.                                 after pauses]
  1003.       Maximum Transmission Rate=0/10/59 [peak same as mean]
  1004.       Maximum Delay Noticed=0/10/100 [100 ms]
  1005.       Maximum Delay Variation=0/10/10 [keep variation low]
  1006.       Loss Sensitivity=1/1 [loss sensitive]
  1007.  
  1008.  
  1009.  
  1010. Partridge                                                      [Page 18]
  1011.  
  1012. RFC 1363             A Proposed Flow Specification        September 1992
  1013.  
  1014.  
  1015.       Burst Loss Sensitivity=0/0/5 [keep bursts small]
  1016.       Loss Interval=1/0
  1017.       Quality of Guarantee=1/201 [predicted service and I'll accept
  1018.                                   worse]
  1019.  
  1020.    A Variable Bit-Rate Video Flow
  1021.  
  1022.       Variable bit-rate video transmissions vary the rate at which they
  1023.       send data according to the amount of the video image that has
  1024.       changed between frames.  In this example, we consider a one-way
  1025.       broadcast of a picture.  If we assume 30 frames a second and that
  1026.       a full frame is about 1 megabit of data, and that on average about
  1027.       10% of the frame changes, but in the worst case the entire frame
  1028.       changes, the flow spec might be:
  1029.  
  1030.       Version=1
  1031.       MTU=4096 [big so we can put lots of bits in each packet]
  1032.       Token Bucket Rate=0/20/1 [8 Mbits/s]
  1033.       Token Bucket Size=0/17/2 [2 Mbits/s]
  1034.       Maximum Transmission Rate=0/20/30 [30 Mbits/s]
  1035.       Maximum Delay Noticed=1/1 [somewhat delay sensitive]
  1036.       Maximum Delay Variation=0/10/1 [no more than one second of
  1037.                                       buffering]
  1038.       Loss Sensitivity=0/0/1 [worst case, one loss per frame]
  1039.       Burst Loss Sensitivity=0/0/1 [no burst errors please]
  1040.       Loss Interval=0/0/33 [one frame in MTU sized packets]
  1041.       Quality of Guarantee=1/300 [guaranteed service only]
  1042.  
  1043.       The token bucket is sized to be two frames of data, and the bucket
  1044.       rate will fill the bucket every 250 ms.  The expectation is that
  1045.       full scene changes will be rare and that a fast rate with a large
  1046.       bucket size should accommodate even a series of scene changes.
  1047.  
  1048.    Disclaimer
  1049.  
  1050.       In all cases, these examples are simply to sketch the use of the
  1051.       flow spec.  The author makes no claims that the actual values used
  1052.       are the correct ones for a particular application.
  1053.  
  1054. Security Considerations
  1055.  
  1056.    Security considerations definitely exist.  For example, one might
  1057.    assume that users are charged for guaranteed flows.  In that case,
  1058.    some mechanism must exist to ensure that a flow request (including
  1059.    flow spec) is authenticated.  However I believe that such issues have
  1060.    to be dealt with as part of designing a negotiation protocol, and are
  1061.    not part of designing the flow spec data structure.
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Partridge                                                      [Page 19]
  1067.  
  1068. RFC 1363             A Proposed Flow Specification        September 1992
  1069.  
  1070.  
  1071. Acknowledgements
  1072.  
  1073.    I'd like to acknowledge the tremendous assistance of Steve Deering,
  1074.    Scott Shenker and Lixia Zhang of XEROX PARC in writing this RFC.
  1075.    Much of this flow spec was sketched out in two long meetings with
  1076.    them at PARC.  Others who have offered notable advice and comments
  1077.    include Isidro Castineyra, Deborah Estrin, and members of the End-
  1078.    to-End Research Group chaired by Bob Braden.  All ideas that prove
  1079.    misbegotten are the sole responsibility of the author.  This work was
  1080.    funded under DARPA Contract No. MDA903-91-D-0019.  The views
  1081.    expressed in this document are not necessarily those of the Defense
  1082.    Advanced Research Projects Agency.
  1083.  
  1084. References
  1085.  
  1086.    1. Parekh, A., "A Generalized Processor Sharing Approach
  1087.       to Flow Control in Integrated Services Networks",
  1088.       MIT Laboratory for Information and Decision Systems,
  1089.       Report No. LIDS-TH-2089.
  1090.  
  1091.    2. Clark, D., Shenker, S., and L. Zhang, "Supporting Real-Time
  1092.       Applications in an Integrated Services Packet Network:
  1093.       Architecture and Mechanism", Proceedings of ACM SIGCOMM '92,
  1094.       August 1992.
  1095.  
  1096. Author's Address
  1097.  
  1098.    Craig Partridge
  1099.    BBN
  1100.    824 Kipling St
  1101.    Palo Alto, CA  94301
  1102.  
  1103.    Phone: 415-325-4541
  1104.  
  1105.    EMail: craig@aland.bbn.com
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Partridge                                                      [Page 20]
  1123.  
  1124.